This search is a standard depth first one. At each step, the variable with the highest efficiency is selected and filled. The search backtracks when a variable has no remaining values.
It is the responsibility of the variables to implement any special heuristics like backjumping and leapfrogging.